//
//  NSDate+YZDatePickView.h
//  VET
//
//  Created by 刘文靖 on 2018/7/18.
//  Copyright © 2018年 YZ. All rights reserved.
//

#import <Foundation/Foundation.h>

@interface NSDate (YZDatePickView)
/// 获取指定date的详细信息
@property (readonly) NSInteger yz_year;    // 年
@property (readonly) NSInteger yz_month;   // 月
@property (readonly) NSInteger yz_day;     // 日
@property (readonly) NSInteger yz_hour;    // 时
@property (readonly) NSInteger yz_minute;  // 分
@property (readonly) NSInteger yz_second;  // 秒
@property (readonly) NSInteger yz_weekday; // 星期

/** 创建 date */
/** yyyy */
+ (nullable NSDate *)yz_setYear:(NSInteger)year;
/** yyyy-MM */
+ (nullable NSDate *)yz_setYear:(NSInteger)year month:(NSInteger)month;
/** yyyy-MM-dd */
+ (nullable NSDate *)yz_setYear:(NSInteger)year month:(NSInteger)month day:(NSInteger)day;
/** yyyy-MM-dd HH:mm */
+ (nullable NSDate *)yz_setYear:(NSInteger)year month:(NSInteger)month day:(NSInteger)day hour:(NSInteger)hour minute:(NSInteger)minute;
/** MM-dd HH:mm */
+ (nullable NSDate *)yz_setMonth:(NSInteger)month day:(NSInteger)day hour:(NSInteger)hour minute:(NSInteger)minute;
/** MM-dd */
+ (nullable NSDate *)yz_setMonth:(NSInteger)month day:(NSInteger)day;
/** HH:mm */
+ (nullable NSDate *)yz_setHour:(NSInteger)hour minute:(NSInteger)minute;

/** 日期和字符串之间的转换：NSDate --> NSString */
+ (nullable  NSString *)yz_getDateString:(NSDate *_Nullable)date format:(NSString *_Nullable)format;
/** 日期和字符串之间的转换：NSString --> NSDate */
+ (nullable  NSDate *)yz_getDate:(NSString *_Nullable)dateString format:(NSString *_Nullable)format;

/** 根据日期字符获取时间戳 */
+ (NSTimeInterval)yz_getDateTimeInterval:(NSString *_Nullable)dateString format:(NSString *_Nullable)format;
/** 根据取时间戳符获日期字 */
+ (NSString*_Nullable)yz_getDateStringFromTimeInterval:(NSTimeInterval)timeInterval format:(NSString *_Nullable)format;

/** 当天凌晨时间字符串 */
+ (NSString*_Nullable)currentDayStartTimeString;
/** 当天凌晨时间 */
+ (NSDate*_Nullable)currentDayStartDate;

/** 获取某个月的天数（通过年月求每月天数）*/
+ (NSUInteger)yz_getDaysInYear:(NSInteger)year month:(NSInteger)month;

/**  获取 日期加上/减去某天数后的新日期 */
- (nullable NSDate *)yz_getNewDate:(NSDate *_Nullable)date addDays:(NSTimeInterval)days;

/**
 *  比较两个时间大小（可以指定比较级数，即按指定格式进行比较）
 */
- (NSComparisonResult)yz_compare:(NSDate *_Nonnull)targetDate format:(NSString *_Nullable)format;
/**
 *  根据时间戳获取距离现在的状态(几天前)
 */
+ (NSString *)distanceTimeWithBeforeTime:(double)beTime;
@end
